package com.econ.powercloud.ems.dal.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * iot设备表
 * </p>
 *
 * @author AutoGenerator
 * @since 2021-06-29
 */
@Accessors(chain = true)
@Data
public class IotDevice implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 设备code
     */
    @TableId(type = IdType.INPUT)
    private String deviceCode;

    /**
     * 父设备code 都是网关设备
     */
    private String parentDeviceCode;

    /**
     * 名称
     */
    private String simpleName;

    /**
     * 应用appcode
     */
    private String deviceAppcode;

    /**
     * 三元组
     */
    private String productKey;

    /**
     * 三元组
     */
    private String deviceName;

    /**
     * 三元组
     */
    private String deviceSecret;

    /**
     * 设备类型：1 直连设备 2：网关设备；3：网关子设备
     */
    private Integer deviceType;


    /**
     * 描述
     */
    private String description;

    /**
     * 【启用状态】 0:退出 1:投入
     */
    private Integer status;

    /**
     * 【联网状态】 0:未关联网关 1:未激活；2:离线中；3:在线；
     */
    private Integer statusForNet;

    /**
     * 网关序列号，硬件标识
     */
    private String gatewaySn;

    /**
     * 网关sim卡号
     */
    private String gatewayCcid;

    /**
     * 网关client_id
     */
    private String gatewayClient;

    /**
     * 网关联网方式: 1:移动网络 2:以太网 3:WiFi 4:LoRAWAN
     */
    private Integer deviceNetworkType;

    /**
     * 网关网络通讯协议:0:mqtt, 1:tcp
     */
    private Integer gatewayNetworkProtocol;

    /**
     * qos：数据质量
     */
    private Integer qos;

    /**
     * tls：安全认证方式
     */
    private String tls;

    /**
     * 运维公司
     */
    private String maintenanceCompany;

    /**
     * 用户公司
     */
    private String consumerCompany;

    /**
     * 生产商
     */
    private String manufacturer;

    /**
     * 设备型号
     */
    private String equipmentModel;

    /**
     * 改动情况：0未改动，1有改动
     */
    private Integer changeStatus;

    /**
     * 配置更新时间
     */
    private LocalDateTime settingModifiedTime;

    /**
     * mqtt协议才有 clientId
     */
    private String mqttClientId;

    /**
     * 当前固件版本号
     */
    private String firmwareVersion;

    /**
     * 乐观锁
     */
    @Version
    private Integer version;
    /**
     * 创建者
     */
    @TableField(fill = FieldFill.INSERT)
    private String createdBy;

    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime gmtCreate;

    /**
     * 修改者
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String modifiedBy;
    /**
     * 修改时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime gmtModify;

    @TableField(fill = FieldFill.INSERT)
    @TableLogic(value = "0", delval = "1")
    private Integer deleteFlag;

    /**
     * 标签
     * from String to List<String> by hgp
     */
    private String label;
}
